Перейти к основному содержимому

5.05. Встроенные функции в C#

Разработчику Архитектору

Встроенные функции в C#

В языке C# отсутствуют глобальные функции в стиле скриптовых языков. Все базовые операции реализованы через статические методы системных классов пространства имён System. Ниже представлен справочник ключевых методов и свойств, выполняющих роль встроенных функций.

Системные операции и управление средой

Метод или свойствоНазначениеПример
Environment.Exit(code)Завершение процесса с указанным кодом возвратаEnvironment.Exit(0);
Environment.GetEnvironmentVariable(name)Получение значения переменной окруженияstring path = Environment.GetEnvironmentVariable("PATH");
Environment.NewLineСтрока для перехода на новую строку, соответствующая ОСConsole.WriteLine("Line1" + Environment.NewLine + "Line2");
GC.Collect()Принудительный запуск сборщика мусораGC.Collect();
GC.WaitForPendingFinalizers()Ожидание завершения всех финализаторовGC.WaitForPendingFinalizers();

Ввод и вывод

Метод или свойствоНазначениеПример
Console.WriteLine(text)Вывод текста с переходом на новую строкуConsole.WriteLine("Привет");
Console.Write(text)Вывод текста без перехода на новую строкуConsole.Write("Введите имя: ");
Console.ReadLine()Чтение строки из стандартного вводаstring name = Console.ReadLine();
Console.ReadKey()Чтение нажатой клавиши без ожидания EnterConsoleKeyInfo key = Console.ReadKey();
Console.Clear()Очистка консолиConsole.Clear();

Математические операции

Метод или свойствоНазначениеПример
Math.Abs(value)Абсолютное значение числаint x = Math.Abs(-5); // 5
Math.Sqrt(value)Квадратный кореньdouble r = Math.Sqrt(16); // 4.0
Math.Pow(base, power)Возведение в степеньdouble v = Math.Pow(2, 3); // 8.0
Math.Round(value)Округление до ближайшего целогоdouble r = Math.Round(3.7); // 4.0
Math.Floor(value)Округление внизdouble f = Math.Floor(3.9); // 3.0
Math.Ceiling(value)Округление вверхdouble c = Math.Ceiling(3.1); // 4.0
Math.Max(a, b)Максимальное из двух значенийint m = Math.Max(10, 20); // 20
Math.Min(a, b)Минимальное из двух значенийint m = Math.Min(10, 20); // 10
Math.PIМатематическая константа πdouble circle = 2 * Math.PI * radius;
Math.EОснование натурального логарифмаdouble exp = Math.Pow(Math.E, 2);

Преобразование типов

Метод или свойствоНазначениеПример
Convert.ToInt32(value)Преобразование в 32-битное целоеint n = Convert.ToInt32("42");
Convert.ToDouble(value)Преобразование в число с плавающей точкойdouble d = Convert.ToDouble("3.14");
Convert.ToString(value)Преобразование в строкуstring s = Convert.ToString(100);
int.Parse(text)Анализ строки в целое числоint n = int.Parse("123");
int.TryParse(text, out result)Безопасный анализ строки в целоеbool ok = int.TryParse("abc", out int n);
bool.Parse(text)Анализ строки в логическое значениеbool b = bool.Parse("true");
Guid.NewGuid()Создание нового уникального идентификатораGuid id = Guid.NewGuid();

Работа со строками

Метод или свойствоНазначениеПример
String.IsNullOrEmpty(value)Проверка на null или пустую строкуbool empty = String.IsNullOrEmpty(s);
String.IsNullOrWhiteSpace(value)Проверка на null, пустоту или пробелыbool blank = String.IsNullOrWhiteSpace(s);
String.Join(separator, values)Объединение элементов массива в строкуstring csv = String.Join(",", items);
String.Format(format, args)Форматирование строкиstring msg = String.Format("Цена: {0:C}", price);
String.Concat(a, b)Объединение строкstring full = String.Concat("Hello", "World");
String.EmptyПустая строкаstring s = String.Empty;

Работа с массивами

Метод или свойствоНазначениеПример
Array.Sort(array)Сортировка элементов массиваArray.Sort(numbers);
Array.Reverse(array)Разворот массиваArray.Reverse(items);
Array.IndexOf(array, value)Поиск индекса элементаint pos = Array.IndexOf(data, 42);
Array.Resize(ref array, newSize)Изменение размера массиваArray.Resize(ref buffer, 100);
Array.Clear(array, index, length)Обнуление участка массиваArray.Clear(flags, 0, flags.Length);

Работа с датами и временем

Метод или свойствоНазначениеПример
DateTime.NowТекущие дата и времяDateTime now = DateTime.Now;
DateTime.UtcNowТекущие дата и время в UTCDateTime utc = DateTime.UtcNow;
DateTime.TodayТекущая дата без времениDateTime today = DateTime.Today;
DateTime.Parse(text)Анализ строки в датуDateTime d = DateTime.Parse("2026-02-15");
DateTime.TryParse(text, out result)Безопасный анализ строки в датуbool ok = DateTime.TryParse(input, out DateTime dt);
TimeSpan.FromSeconds(seconds)Создание интервала из секундTimeSpan t = TimeSpan.FromSeconds(60);
DateTimeOffset.NowТекущая дата и время с часовым поясомDateTimeOffset dto = DateTimeOffset.Now;

Отладка и трассировка

Метод или свойствоНазначениеПример
Debug.WriteLine(message)Запись сообщения в отладочный выводDebug.WriteLine("Загрузка завершена");
Debug.Assert(condition)Проверка условия в режиме отладкиDebug.Assert(index >= 0);
Trace.WriteLine(message)Запись сообщения в трассировкуTrace.WriteLine("Обработка элемента");

Генерация случайных значений

Метод или свойствоНазначениеПример
Random.Next()Случайное целое числоint r = random.Next();
Random.Next(max)Случайное число от 0 до max-1int dice = random.Next(6) + 1;
Random.Next(min, max)Случайное число в диапазонеint port = random.Next(1024, 65536);
Random.NextDouble()Случайное число от 0.0 до 1.0double factor = random.NextDouble();

Работа с файловой системой

Метод или свойствоНазначениеПример
File.ReadAllText(path)Чтение всего содержимого файла как строкиstring content = File.ReadAllText("config.txt");
File.WriteAllText(path, text)Запись строки в файл, перезаписывая существующийFile.WriteAllText("log.txt", "Событие произошло");
File.AppendAllText(path, text)Добавление текста в конец файлаFile.AppendAllText("log.txt", "\nНовая запись");
File.Exists(path)Проверка существования файлаbool exists = File.Exists("data.bin");
File.Delete(path)Удаление файлаFile.Delete("temp.tmp");
Directory.CreateDirectory(path)Создание каталога и всех промежуточных каталоговDirectory.CreateDirectory("logs/2026/02");
Directory.Exists(path)Проверка существования каталогаbool exists = Directory.Exists("backup");
Directory.GetFiles(path)Получение массива путей ко всем файлам в каталогеstring[] files = Directory.GetFiles("docs");
Directory.GetDirectories(path)Получение массива путей ко всем подкаталогамstring[] dirs = Directory.GetDirectories("projects");
Path.Combine(part1, part2)Безопасное объединение частей пути с учётом ОСstring fullPath = Path.Combine("data", "users", "list.csv");
Path.GetExtension(path)Получение расширения файла с точкойstring ext = Path.GetExtension("report.pdf"); // ".pdf"
Path.GetFileName(path)Получение имени файла из полного путиstring name = Path.GetFileName("C:/docs/readme.txt"); // "readme.txt"

Работа с потоками данных

Метод или свойствоНазначениеПример
FileStream.Read(buffer, offset, count)Чтение байтов из файла в буферint read = fs.Read(buffer, 0, buffer.Length);
FileStream.Write(buffer, offset, count)Запись байтов из буфера в файлfs.Write(data, 0, data.Length);
MemoryStream.ToArray()Преобразование содержимого потока в массив байтовbyte[] bytes = ms.ToArray();
StreamReader.ReadLine()Чтение одной строки из текстового потокаstring line = reader.ReadLine();
StreamWriter.WriteLine(text)Запись строки с переводом строки в текстовый потокwriter.WriteLine("Заголовок");
Stream.Flush()Сброс буферизованных данных на устройствоstream.Flush();
Stream.Close()Закрытие потока и освобождение ресурсовstream.Close();
Stream.Dispose()Освобождение неуправляемых ресурсов потокаstream.Dispose();

Сетевые операции

Метод или свойствоНазначениеПример
HttpClient.GetAsync(uri)Асинхронный HTTP-запрос методом GETHttpResponseMessage response = await client.GetAsync("https://api.example.com/data");
HttpClient.PostAsync(uri, content)Асинхронный HTTP-запрос методом POSTvar response = await client.PostAsync("https://api.example.com/users", jsonContent);
HttpResponseMessage.Content.ReadAsStringAsync()Чтение тела ответа как строкиstring body = await response.Content.ReadAsStringAsync();
IPAddress.Parse(address)Преобразование строкового представления IP в объектIPAddress ip = IPAddress.Parse("192.168.1.1");
Dns.GetHostAddresses(host)Получение IP-адресов по доменному имениIPAddress[] ips = Dns.GetHostAddresses("example.com");

Работа с типами и рефлексией

Метод или свойствоНазначениеПример
typeof(T)Получение объекта Type для указанного типа во время компиляцииType t = typeof(string);
Object.GetType()Получение объекта Type для экземпляра во время выполненияType t = obj.GetType();
Type.GetMethod(name)Получение информации о методе по имениMethodInfo m = type.GetMethod("Calculate");
Type.GetProperties()Получение всех публичных свойств типаPropertyInfo[] props = type.GetProperties();
Activator.CreateInstance(type)Создание экземпляра типа через рефлексиюobject instance = Activator.CreateInstance(typeof(User));
Convert.ChangeType(value, targetType)Преобразование объекта к указанному типуint number = (int)Convert.ChangeType("42", typeof(int));

Кодировка текста

Метод или свойствоНазначениеПример
Encoding.UTF8.GetBytes(text)Преобразование строки в массив байтов в кодировке UTF-8byte[] bytes = Encoding.UTF8.GetBytes("Привет");
Encoding.UTF8.GetString(bytes)Преобразование массива байтов в строку из кодировки UTF-8string text = Encoding.UTF8.GetString(bytes);
Encoding.ASCII.GetBytes(text)Преобразование строки в массив байтов в кодировке ASCIIbyte[] ascii = Encoding.ASCII.GetBytes("Hello");

Параллельное выполнение

Метод или свойствоНазначениеПример
Task.Run(action)Запуск делегата в фоновом потоке пула потоковTask.Run(() => ProcessData());
Task.WaitAll(tasks)Ожидание завершения всех переданных задачTask.WaitAll(task1, task2, task3);
Thread.Sleep(milliseconds)Приостановка выполнения текущего потокаThread.Sleep(1000); // пауза 1 секунда
Interlocked.Increment(ref location)Атомарное увеличение целочисленного значенияInterlocked.Increment(ref counter);
Monitor.Enter(obj)Захват монитора для синхронизацииMonitor.Enter(lockObject);
Monitor.Exit(obj)Освобождение ранее захваченного монитораMonitor.Exit(lockObject);

Работа с атрибутами

Метод или свойствоНазначениеПример
Attribute.GetCustomAttribute(element, type)Получение одного пользовательского атрибутаvar attr = Attribute.GetCustomAttribute(method, typeof(DescriptionAttribute));
Attribute.GetCustomAttributes(element)Получение всех пользовательских атрибутов элементаobject[] attrs = Attribute.GetCustomAttributes(type);

Управление памятью и ресурсами

Метод или свойствоНазначениеПример
IDisposable.Dispose()Явное освобождение неуправляемых ресурсовconnection.Dispose();
using (resource)Автоматическое вызывание Dispose() при выходе из блокаusing (var file = File.OpenRead("data.bin")) { ... }
WeakReference.TargetПолучение ссылки на объект без предотвращения сборки мусораobject obj = weakRef.Target;

Работа с коллекциями

Метод или свойствоНазначениеПример
List<T>.Add(item)Добавление элемента в конец спискаusers.Add(new User());
List<T>.Remove(item)Удаление первого вхождения элемента из спискаusers.Remove(deletedUser);
List<T>.Find(predicate)Поиск первого элемента, удовлетворяющего условиюUser admin = users.Find(u => u.IsAdmin);
List<T>.Sort()Сортировка элементов списка по умолчаниюnumbers.Sort();
Dictionary<TKey, TValue>.Add(key, value)Добавление пары ключ-значение в словарьsettings.Add("timeout", 30);
Dictionary<TKey, TValue>.TryGetValue(key, out value)Безопасное получение значения по ключуbool found = settings.TryGetValue("timeout", out int timeout);
Dictionary<TKey, TValue>.ContainsKey(key)Проверка наличия ключа в словареbool hasKey = settings.ContainsKey("theme");
Enumerable.Where(source, predicate)Фильтрация последовательности по условиюvar adults = people.Where(p => p.Age >= 18);
Enumerable.Select(source, selector)Проекция каждого элемента в новую формуvar names = users.Select(u => u.Name);
Enumerable.ToList(source)Материализация последовательности в списокList<int> list = numbers.Where(n => n > 0).ToList();
Enumerable.ToArray(source)Материализация последовательности в массивint[] array = numbers.ToArray();
Enumerable.Count(source)Подсчёт количества элементов в последовательностиint total = items.Count();
Enumerable.Any(source)Проверка наличия хотя бы одного элементаbool hasItems = collection.Any();
Enumerable.First(source)Получение первого элемента последовательностиUser first = users.First();
Enumerable.FirstOrDefault(source)Получение первого элемента или значения по умолчаниюUser first = users.FirstOrDefault();

Сериализация и десериализация

Метод или свойствоНазначениеПример
JsonSerializer.Serialize<T>(value)Преобразование объекта в строку JSONstring json = JsonSerializer.Serialize(user);
JsonSerializer.Deserialize<T>(json)Преобразование строки JSON в объектUser user = JsonSerializer.Deserialize<User>(json);
XmlSerializer.Serialize(stream, o)Запись объекта в XML-форматserializer.Serialize(stream, config);
XmlSerializer.Deserialize(stream)Чтение объекта из XML-форматаConfig cfg = (Config)serializer.Deserialize(stream);
BinaryFormatter.Serialize(stream, graph)Бинарная сериализация объектаformatter.Serialize(stream, data);
BinaryFormatter.Deserialize(stream)Восстановление объекта из бинарного представленияobject obj = formatter.Deserialize(stream);

Криптографические операции

Метод или свойствоНазначениеПример
SHA256.HashData(bytes)Вычисление хеша SHA-256 для массива байтовbyte[] hash = SHA256.HashData(data);
MD5.HashData(bytes)Вычисление хеша MD5 для массива байтовbyte[] hash = MD5.HashData(data);
Aes.Create()Создание экземпляра алгоритма AES для шифрованияusing Aes aes = Aes.Create();
RSACryptoServiceProvider.Encrypt(data, fOAEP)Шифрование данных открытым ключом RSAbyte[] cipher = rsa.Encrypt(plain, true);
RSACryptoServiceProvider.Decrypt(data, fOAEP)Расшифровка данных закрытым ключом RSAbyte[] plain = rsa.Decrypt(cipher, true);
ProtectedData.Protect(data, entropy, scope)Шифрование данных с использованием DPAPI Windowsbyte[] protected = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);
ProtectedData.Unprotect(data, entropy, scope)Расшифровка данных, защищённых DPAPIbyte[] plain = ProtectedData.Unprotect(protected, null, DataProtectionScope.CurrentUser);

Работа с процессами

Метод или свойствоНазначениеПример
Process.Start(fileName)Запуск процесса по имени исполняемого файлаProcess.Start("notepad.exe");
Process.Start(startInfo)Запуск процесса с расширенными параметрамиProcess.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/c dir" });
Process.GetProcesses()Получение массива всех запущенных процессовProcess[] processes = Process.GetProcesses();
Process.GetCurrentProcess()Получение объекта текущего процессаProcess current = Process.GetCurrentProcess();
Process.Kill()Принудительное завершение процессаprocess.Kill();
Process.WaitForExit()Ожидание завершения процессаprocess.WaitForExit();

Работа с исключениями

Метод или свойствоНазначениеПример
Exception.MessageТекстовое описание ошибкиstring msg = ex.Message;
Exception.StackTraceИнформация о стеке вызовов на момент исключенияstring trace = ex.StackTrace;
Exception.InnerExceptionВложенное исключение, вызвавшее текущееException inner = ex.InnerException;
throwПовторное выбрасывание перехваченного исключенияcatch (Exception ex) { Log(ex); throw; }
throw exceptionВыбрасывание нового или существующего исключенияif (value < 0) throw new ArgumentException("Значение не может быть отрицательным");

Локализация и культура

Метод или свойствоНазначениеПример
CultureInfo.CurrentCultureТекущая культура потока для форматированияCultureInfo culture = CultureInfo.CurrentCulture;
CultureInfo.CurrentUICultureТекущая культура для локализованных ресурсов интерфейсаCultureInfo ui = CultureInfo.CurrentUICulture;
CultureInfo.GetCultureInfo(name)Получение объекта культуры по имениCultureInfo ru = CultureInfo.GetCultureInfo("ru-RU");
DateTime.ToString(format, culture)Форматирование даты с учётом культурыstring s = date.ToString("D", ru);

Работа с реестром Windows

Метод или свойствоНазначениеПример
Registry.CurrentUserКорневой раздел HKEY_CURRENT_USERRegistryKey key = Registry.CurrentUser.OpenSubKey("Software");
Registry.LocalMachineКорневой раздел HKEY_LOCAL_MACHINERegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM");
RegistryKey.GetValue(name)Чтение значения параметра реестраobject val = key.GetValue("Version");
RegistryKey.SetValue(name, value)Запись значения параметра реестраkey.SetValue("InstallPath", @"C:\App");
RegistryKey.CreateSubKey(name)Создание нового подраздела реестраRegistryKey sub = key.CreateSubKey("Settings");

Полезные утилиты

Метод или свойствоНазначениеПример
Stopwatch.StartNew()Создание и запуск нового таймераStopwatch sw = Stopwatch.StartNew();
Stopwatch.ElapsedПолучение прошедшего времени с момента запускаTimeSpan elapsed = sw.Elapsed;
Enum.Parse<TEnum>(value)Преобразование строки в значение перечисленияDayOfWeek day = Enum.Parse<DayOfWeek>("Monday");
Enum.TryParse<TEnum>(value, out result)Безопасное преобразование строки в перечислениеbool ok = Enum.TryParse<LogLevel>("Debug", out LogLevel level);
Enum.GetValues<TEnum>()Получение массива всех значений перечисленияArray values = Enum.GetValues<LogLevel>();
Enum.GetNames<TEnum>()Получение массива имён всех значений перечисленияstring[] names = Enum.GetNames<DayOfWeek>();
Nullable.GetUnderlyingType(type)Получение базового типа для типа, допускающего nullType t = Nullable.GetUnderlyingType(typeof(int?)); // typeof(int)
StringComparer.OrdinalIgnoreCaseСравнитель строк без учёта регистраvar dict = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);